Jump To:
Technical Q&As
The I/O Kit is the device driver subsystem of Mac OS X, and is part of Darwin. The I/O Kit provides a set of C functions and C++ classes, including object-oriented abstractions common to various families of drivers. In addition, for many device types, the I/O Kit provides a device interface that enables an application to communicate with and control a device from user space.

Device Drivers Resources
A guided introduction and learning path for developers writing software that accesses devices in Mac OS X.   Essential information for developers working with device drivers.   Descriptions of driver interface elements, by library and framework.
Device Drivers Topics
Programming interfaces that support access to storage devices, such as hard disk drives, that use the ATA or ATA/ATAPI-5 interfaces.   AirPort is Apple's wireless network technology that delivers fast, reliable communications between computers in a local area network and between that network and the Internet.   Programming interfaces that leverage the features of Bluetooth devices. Bluetooth is an open specification that enables short-range wireless communication between computers and peripherals.

Programming interfaces that support development of Ethernet drivers.   Programming interfaces that support access to devices that conform to the Fibre Channel standards for high-speed data transfer.   Programming interfaces that support access to FireWire devices. FireWire is an implementation of the IEEE 1394 standards.

Programming interfaces that support access to human-interface devices, such as mice and joysticks. Some of these devices provide tactile feedback, called force feedback.   Programming interfaces that support access to random-access and sequential-access devices that provide data storage, including those that mount file systems or are bootable.   Programming interfaces for developing in-kernel and application-level access for high-quality audio devices.

Programming interfaces that support access to network configuration, networking devices, or network stacks.   Programming interfaces that support access to Open Firmware for purposes of debugging and testing.   Programming interfaces that support access to devices that use PCI and PC Card technologies, such as devices that require low-latency communication.

Programming interfaces that support the development of printer drivers.   The command sets and physical interfaces defined by the SCSI Architecture Model specifications.   Programming interfaces that support access to scanners.

Programming interfaces that support access to serial-port devices--such as modems, data terminals, and some printers--and the development of serial controller drivers.   Programming interfaces that support access to digital still cameras.   Programming interfaces that support access to USB devices. USB is a cross-platform peripheral standard that supports hot plugging and expandability for low-cost devices.

View legacy technologies, including technologies, features, products, APIs, and programming techniques that are no longer supported or have been superseded.